package com.util.DesignPattern.TemplateMethod.methodB;

/**
 * 含钩子方法的抽象类
 * 
 * @Package: com.util.DesignPattern.TemplateMethod.methodB
 * @ClassName: HookAbstractClass.java
 * @Description:含钩子方法的抽象类
 * 
 * @author kaifa008
 * @date 2022年1月26日 下午1:38:37
 * @Copyright: 2022 Copyright (c) 2018 LgSteel
 */
public abstract class HookAbstractClass {
	// 模板方法
	public void TemplateMethod() {
		abstractMethod1();
		HookMethod1();
		if (HookMethod2()) {
			specificMethod();
		}
		abstractMethod2();
	}

	// 具体方法
	public void specificMethod() {
		System.out.println("抽象类中的具体方法被调用...");
	}

	// 钩子方法1
	public void HookMethod1() {
	}

	// 钩子方法2
	public boolean HookMethod2() {
		return true;
	}

	// 抽象方法1
	public abstract void abstractMethod1();

	// 抽象方法2
	public abstract void abstractMethod2();
}